<template>
	<view class="page">
		<custom-navigation :title="title">
		</custom-navigation>

		<view class="head-contaienr" v-if="info!=null">
			<view class="item flex-row-center">
				<view class="value">单据编号：{{info.inventory_no}}</view>
				<view :class="info.inventory_state=='已提交'?'bluebtn':'redbtn'">{{info.inventory_state}} </view>
			</view>
			<view class="item flex-row-center">
				<view class="value">制单日期：{{info.create_time}}</view>
			</view>
		</view>
		<picker :value="inventoryTeypIndex" :range="inventoryTeyps" @change="e=>{
			switchType(e.detail.value)
			}">
			<view class="head-item flex-row-center">
				<view class="title">盘点类型</view>
				<view class="value">{{inventoryTeyps[inventoryTeypIndex]}}</view>
				<image src="/static/arrow-blackmin.png"></image>
			</view>
		</picker>
		<view class="head-item flex-row-center" @click="remarkDialogShow=true;dialogRemark=remark;">
			<view class="title" style="flex: 0.4;">盘点备注</view>
			<view class="value u-line-2" style="text-align: end;flex: 1;">{{remark}}</view>
			<image src="/static/arrow-blackmin.png"></image>
		</view>

		<view class="head-item flex-row-center">
			<view class="title">商品明细</view>
			<view class="add-goods" @click="$navigateTo('/pages/goods/goods_info?selectMode=true')">选择商品</view>
		</view>


		<scroll-view scroll-y="true" class="body-scroll" style="margin-top: 20rpx;">
			<view class="item-view" v-for="(item,index) in goodsList" @click="itemOnClick(item)">
				<view class="name">{{item.goods_name}}</view>
				<view class="flex-row-center" style="flex: 1;">
					<view style="flex: 1; margin: 4rpx 0;">{{item.goods_barcode}}</view>
					<view>盘点数量：{{item.inventory_num}}</view>

				</view>
				<view class="flex-row-center">
					<view style="flex: 1;margin: 4rpx 0;">进货价格：{{item.cost_price}}</view>
					<view>系统库存：{{item.goods_stock}}</view>

				</view>


				<view class="flex-row-center ">
					<view style="flex: 1; " class="view1">盈亏金额：<view class="no-line">{{ getAmount(item.profit_loss_amount||0)}}</view></view>
					<view class="view1">盈亏数量：{{item.profit_loss_num}}</view>

				</view>
				<image src="../../static/remove.png" @click.stop="remove(index)"></image>
			</view>
		</scroll-view>
		<view class="total-box flex-row-center">
			共{{goodsList.length}}种，  总盘点数量: {{getAllInventoryNum()}}
		</view>
		<view class="bottom-container flex-row-center">
			<view class="item" @click="save(0)">保存草稿</view>
			<view class="item1" @click="save(1)">提交</view>
		</view>


		<drag-button :isDock="true" :existTabBar="true" @btnClick="$noMultipleClicks(qrcode)" @btnTouchstart="btnTouchstart"
			@btnTouchend="btnTouchend" />

		<u-mask :show="remarkDialogShow" mode="center" bgColor="transparent" class="flex-column-center"
			style="justify-content: center;">

			<view class="remark-dialog flex-column">
				<view class="title-box">
					<view class="text">备注</view>
					<image src="../../static/close.png" @click.stop="remarkDialogShow=false"></image>
				</view>
				<view class="line"></view>
				<textarea class="input" placeholder="请输入备注" v-model="dialogRemark"></textarea>
				<view class="boottom-btn-box flex-row">
					<view class="left-btn" @click="remarkDialogShow=false">取消</view>
					<view class="right-btn" @click="rightAction">确定</view>
				</view>
			</view>
		</u-mask>
		<u-mask :show="editGoodsDialogShow" mode="bottom" bgColor="transparent" class="flex-column-center"
			style="justify-content: flex-end;" @click="editGoodsDialogShow=false">
			<view @tap.stop>

				<view :class="editGoodsDialogShow?'showDialog':''" @tap.stop>

					<view class="r" @tap.stop>{{currGoodsInfo.goods_name}}</view>
					<view class="r" @tap.stop>{{currGoodsInfo.goods_barcode}}</view>
					<view class="flex-row-center">
						<view class="r" @tap.stop>单位：{{currGoodsInfo.goods_unit_name}}</view>
						<view class="r" @tap.stop>系统库存：{{currGoodsInfo.goods_stock}}</view>
					</view>


					<view class="flex-row-center">
						<view class="r" @tap.stop>进货价：￥{{currGoodsInfo.cost_price}}</view>
						<view class="r flex-row-center" @tap.stop>盘点数量：<input placeholder="请输入" type="digit"
								v-model="currInputNum"  @input="e=> {
										e.target.value = e.target.value?parseInt(Number(e.target.value)):'';
										  $nextTick(() => {
											currInputNum= e.target.value+''
										  })
									}"/>
						</view>
					</view>

					<view class="flex-row-center">
						<view class="r" @tap.stop>销售价：￥{{currGoodsInfo.sale_price}}</view>
						<view class="r" @tap.stop>盈亏数量：{{currGoodsInfo.profit_loss_num}}</view>
					</view>

					<view class="flex-row-center">
						<view class="r" @tap.stop>盘点类型：{{ inventoryTeyps[inventoryTeypIndex]}}</view>
						<view class="r" @tap.stop>盈亏金额：{{currGoodsInfo.profit_loss_amount}}</view>
					</view>



					<view class="bottom-box flex-row-center" @tap.stop>
						<view class="cancel" @click="editGoodsDialogShow=false">取消</view>
						<view class="confirm" @click="confirmEntry">确定</view>
					</view>
				</view>
			</view>
		</u-mask>

	</view>
</template>

<script>
	import {
		fatherAndSonUpdates,
		fatherAndSonAdds
	} from '@/common/api/parameter_tool.js'
	export default {
		data() {
			return {
				   noClick:true,
				editGoodsDialogShow: false,
				currGoodsInfo: {},
				remarkDialogShow: false,
				title: "新增盘点",
				remark: "",
				dialogRemark: "",
				currInputNum: '',
				goodsList: [],
				info: null,
				inventoryTeypIndex: 0,
				inventoryTeyps: ["覆盖", "累加"],
				delIds:null
			}
		},
		onLoad(options) {
			if (options.info != null) {
				this.info = JSON.parse(options.info)
				for (let i in this.inventoryTeyps) {
					if (this.inventoryTeyps[i] == this.info.inventory_type) {
						this.inventoryTeypIndex = i
					}
				}
				this.remark = this.info.remark;
				this.title = "编辑盘点"
				this.getData()
			}
		},
		onShow() {
			let list = uni.getStorageSync("multipleSelectList")
			if (list != null) {
				for (let i in list) {
					list[i].id = null;
					list[i].cost_price = list[i].purchase_price;
				}

				let listbars = [];
				for (let i in this.goodsList) {
					listbars.push(this.goodsList[i].goods_barcode);
				}

				for (let i in list) {
					let barcode = list[i].goods_barcode;
					if (listbars.indexOf(barcode) == -1) {
						this.goodsList.push(list[i]);
					}
				}




				uni.setStorageSync("multipleSelectList", null)
			}
		},
		methods: {
			switchType(index) {

				for (let i in this.goodsList) {
					let item = this.goodsList[i];
					if (item.inventory_num == null || item.inventory_num.length == 0) {
						continue
					}
					if (index == 0) //覆盖 盘点数量不能为空。
					{
						if ((item.inventory_num || 0) < 0) {
							this.$showToast("覆盖状态盘点数量不能为负！")
							return;
						}
					} else { //累加

					}
				}
				this.inventoryTeypIndex = index;
				this.changeAll()

			},
			getAmount(amount) {
				amount = amount.toFixed(5);
				if (amount < 0) {
					return "-￥" + (amount * -1);
				} else
					return "￥" + (amount * 1);
			},
			confirmEntry() {

				if ((this.currInputNum || 0) < 0 && this.inventoryTeypIndex == 0) {
					this.$showToast("覆盖状态盘点数量不能为负！")
					return;
				} else if (this.currInputNum.length > 0 && (parseFloat(this.currInputNum) + this.currGoodsInfo
						.goods_stock) < 0) {
					this.$showToast("累计状态盘点数量+系统库存不能小于0！")
					return;
				}


				this.currGoodsInfo.inventory_num = this.currInputNum; //盘点数量
				this.changeAll();
				// if (this.inventoryTeypIndex == 0) //覆盖
				// {
				// 	//盘亏数量
				// 	this.currGoodsInfo.profit_loss_num = this.currInputNum - this.currGoodsInfo.goods_stock
				// 	//盘亏金额
				// } else { //累加
				// 	//盘亏数量
				// 	this.currGoodsInfo.profit_loss_num = this.currInputNum
				// }


				// let sale_amount = this.currGoodsInfo.sale_price * this.currGoodsInfo.profit_loss_num;
				// this.currGoodsInfo.profit_loss_amount = sale_amount - this.currGoodsInfo.stock_amount;
				this.editGoodsDialogShow = false;
			},

			changeAll() {
				for (let i in this.goodsList) {
					let item = this.goodsList[i];
					if (item.inventory_num == null || item.inventory_num.length == 0) {
						continue
					}
					if (this.inventoryTeypIndex == 0) //覆盖
					{
						//盘亏数量
						item.profit_loss_num = (item.inventory_num || 0) - item.goods_stock
						//盘亏金额
					} else { //累加
						//盘亏数量
						item.profit_loss_num = item.inventory_num
					}
					let sale_amount = item.cost_price * item.profit_loss_num;
					item.profit_loss_amount = sale_amount;
				}

			},

			itemOnClick(item) {
				this.currGoodsInfo = item;
				this.currInputNum = this.$haveVal(this.currGoodsInfo.inventory_num); 
				this.editGoodsDialogShow = true;
			},
			rightAction() {
				this.remark = this.dialogRemark;
				this.remarkDialogShow = false;
			},
			getAllQty() {
				let countQty = 0;
				for (let i in this.goodsList) {
					countQty += parseInt(this.goodsList[i].profit_loss_num ?? '0')
				}
				return countQty;
			},

			getAllInventoryNum() {
				let countQty = 0;
				for (let i in this.goodsList) {
					countQty += parseInt((this.goodsList[i].inventory_num||0) ?? '0')
				}
				return countQty;
			},
			remove(index) {
				if (this.delIds == null) this.delIds = []
				this.delIds.push(this.goodsList[index].id)
				this.goodsList.splice(index, 1)
			},
			qrcode() {
				// this.qrcodeSearch("6903244679985")
				// return;
				let ths = this;
				dsBridge.call("QRCode", {}, function(res) {
					if (res) {
						ths.qrcodeSearch(res)

					}
				})
			},
			qrcodeSearch(qrcode) {
				uni.showLoading({
					title: "加载中..."
				})
				this.$apiPost("/retail/select/srvretail_goods_info_select", {
					serviceName: "srvretail_goods_info_select",
					condition: [{
						"colName": "goods_barcode",
						"ruleType": "like",
						"value": qrcode
					}],
					page: {
						"pageNo": 1,
						"rownumber": 500
					},
					"colNames": ["*"]
				}).then(res => {
					uni.hideLoading()
					if (res.data.length > 0) {
						res.data[0].id = null
						res.data[0].cost_price = res.data[0].purchase_price;
						for (let i in this.goodsList) {
							if (this.goodsList[i].goods_barcode == qrcode) { 
								this.currGoodsInfo = this.goodsList[i];
								this.currInputNum = this.currGoodsInfo.inventory_num+""; 
								this.currInputNum =parseInt(this.currInputNum )+1
								this.confirmEntry()
								return;
							}
						}
						res.data[0].id = null;
						res.data[0].inventory_num = ""
						this.goodsList.push(res.data[0])
						this.changeAll()
					} else {
						this.$showToast('没有找到该条码')
					}
				})
			},
			save(type) { //type 0 保存草稿，1 提交。
				uni.showLoading({
					title: "加载中..."
				})
				let flg = false;
				let datas = [];
				for (let i in this.goodsList) {
					let item = this.goodsList[i]
					if(item.inventory_num === null || item.inventory_num === undefined || item.inventory_num === ''){
						flg=true;
					}
					datas.push({
						"id": item.id,
						"goods_no": item.goods_no,
						"goods_barcode": item.goods_barcode,
						"goods_name": item.goods_name,
						"goods_stock": item.goods_stock,
						"stock_amount": item.stock_amount,
						"brand_name": item.brand_name,
						"supplier_name": item.supplier_name,
						"goods_classify": item.classify_name ?? item.goods_classify,
						"goods_unit": item.goods_unit_name ?? item.goods_unit,
						// "sale_price": item.sale_price,
						// "manufacture_date": item.manufacture_date,

						"inventory_type": this.inventoryTeyps[this.inventoryTeypIndex],
						"cost_price": item.cost_price,
						"inventory_num": Number(item.inventory_num),
					})
				}
				if(flg){
					this.$showToast('盘点数量不能为空')
					return;
				}

				if(!datas.length){
					this.$showToast('请选择商品')
					return;
				}
				var params = undefined;
				if (this.info?.id == undefined) { //add
					params = fatherAndSonAdds("srvretail_inventory_add", "srvretail_inventory_detail_add",
						"inventory_no", "inventory_state", type == 0 ? '待提交' : '已提交', datas)
				} else {
					params = fatherAndSonUpdates("srvretail_inventory_update", this.info.id,
						"srvretail_inventory_detail_update",
						"inventory_no", "inventory_state", type == 0 ? '待提交' : '已提交', datas)
				}

				params[0].data[0].remark = this.remark;
				params[0].data[0].inventory_type = this.inventoryTeyps[this.inventoryTeypIndex];
				params[0].data[0].channel_source=this.$SystemType;
				
				
				
				if (this.delIds != null) {
					var delparList = [];
					for (let i in this.delIds) {
						delparList.push({
							serviceName: "srvretail_inventory_detail_delete",
							condition: [{
								"colName": "id",
								"ruleType": "eq",
								"value": this.delIds[i]
							}]
				
						})
					}
					params[0].data[0].child_data_list.push(...delparList)
				}
				
				this.$apiPost(this.info ? "/retail/operate/srvretail_inventory_update" :
					"/retail/operate/srvretail_inventory_add", params).then(res => {
					uni.hideLoading()
					uni.setStorageSync("refresh", true)
					if (res.state == "SUCCESS") {
						uni.showToast({
							title: "成功！",
							mask: true
						})

						setTimeout(() => {
							// if(type==1 && this.info != null){
							// 	uni.navigateTo({
							// 		url: '/pages/inventory/inventory-list'
							// 	})
							// } else {
								uni.navigateBack()
							// }
						}, 1500)
					}
				})

			},

			getData() {
				uni.showLoading({
					title: "加载中..."
				})
				this.$apiPost("/retail/select/srvretail_inventory_detail_select", {
					"serviceName": "srvretail_inventory_detail_select",
					"colNames": ["*"],
					"condition": [{
						"colName": "inventory_no",
						"ruleType": "eq",
						"value": this.info.inventory_no
					}],
					"relation_condition": {},
					"page": {
						"pageNo": 1,
						"rownumber": 500
					}
				}).then(res => {
					uni.hideLoading()
					this.goodsList = res.data;
				})
			}
		}
	}
</script>

<style scoped lang="scss">
	.no-line {
		display: inline-block;
	}
	.head-contaienr {
		background-color: white;

		.item {
			padding: 20rpx 20rpx;

			.value {
				flex: 1;
				font-size: 32rpx;
				font-weight: 500;
				color: rgba(51, 51, 51, 1);
			}
		}

		.bluebtn {
			width: 124rpx;
			height: 48rpx;
			text-align: center;
			line-height: 48rpx;
			border-radius: 4rpx;
			border: 2rpx solid rgba(56, 192, 158, 1);
			margin-right: 22rpx;
			font-size: 28rpx;
			font-weight: 500;
			color: rgba(56, 192, 158, 1);
		}

		.redbtn {
			width: 124rpx;
			height: 48rpx;
			text-align: center;
			line-height: 48rpx;
			border-radius: 4rpx;
			border: 2rpx solid rgba(212, 48, 48, 1);
			margin-right: 22rpx;
			font-size: 28rpx;
			font-weight: 500;
			color: rgba(212, 48, 48, 1);
		}
	}

	.head-item {
		padding-left: 20rpx;
		padding-right: 24rpx;
		min-height: 100rpx;
		background-color: white;
		margin-bottom: 2rpx;

		.title {
			font-size: 32rpx;
			font-weight: 500;
			color: rgba(0, 0, 0, 1);
			flex: 1;
		}

		.value {
			font-size: 28rpx;
			font-weight: 500;
		}

		image {
			margin-left: 16rpx;
			width: 8rpx;
			height: 16rpx;

		}

		.add-goods {
			box-sizing: content-box;
			width: 160rpx;
			height: 60rpx;
			line-height: 60rpx;
			text-align: center;
			border-radius: 60rpx;
			border: 1px solid rgba(212, 48, 48, 1);
			font-size: 30rpx;
			font-weight: 400;
			color: rgba(212, 48, 48, 1);
		}
	}

	.remark-dialog {
		width: 560rpx;
		justify-content: center;
		border-radius: 20rpx;
		background: rgba(255, 255, 255, 1);
		padding-top: 34rpx;

		.title-box {
			font-size: 18px;
			font-weight: 700;
			color: rgba(51, 51, 51, 1);
			position: relative;

			.text {
				width: 540rpx;
				text-align: center;
			}

			image {
				width: 52rpx;
				position: absolute;
				right: 10rpx;
				top: 0;
				height: 52rpx;
			}
		}

		.line {
			margin-top: 14rpx;
			height: 2rpx;
			width: 100%;
			background-color: rgba(225, 225, 225, 1);
		}

		.input {
			width: 464rpx;
			height: 210rpx;
			margin-left: 48rpx;
			margin-top: 44rpx;
			margin-bottom: 60rpx;
			border: 2rpx solid rgba(241, 241, 241, 1);
			padding: 20rpx;
			box-sizing: border-box;
			color: rgba(153, 153, 153, 1);
			font-size: 24rpx;
			font-weight: 500;
		}


		.boottom-btn-box {
			width: 100%;
			height: 100rpx;
			border-radius: 0 0 20rpx 20rpx;
			font-size: 36rpx;
			font-weight: 700;
			border-top: 2rpx solid rgba(224, 222, 222, 1);

			.left-btn {
				flex: 1;
				line-height: 100rpx;
				text-align: center;
				color: rgba(56, 192, 158, 1);
				border-right: 1rpx solid rgba(224, 222, 222, 1);
			}

			.right-btn {
				flex: 1;
				line-height: 100rpx;
				text-align: center;
			}
		}
	}

	.total-box {
		padding-left: 24rpx;
		height: 80rpx;
		opacity: 1;
		background: rgba(227, 227, 227, 1);
		font-size: 24rpx;
		font-weight: 500;
		color: rgba(0, 0, 0, 1);
	}

	.item-view {
		padding: 26rpx 20rpx 0 24rpx;
		padding-bottom: 18rpx;
		background: rgba(255, 255, 255, 1);
		border-bottom: 2rpx solid rgba(245, 245, 247, 1);
		;
		position: relative;

		.name {
			font-size: 28rpx;
			font-weight: 700;
			color: rgba(51, 51, 51, 1);

		}

		view {
			flex: 0.8;
			font-size: 28rpx;
			font-weight: 500;
			color: rgba(51, 51, 51, 1);
			margin-right: 25rpx;
		}

		.view1 {
			flex: 0.85;
			margin-top: 7rpx;
			margin-right: 25rpx;
			font-size: 28rpx;
			font-weight: 700;
			color: rgba(51, 51, 51, 1);
		}

		image {
			width: 40rpx;
			height: 40rpx;
			position: absolute;
			right: 24rpx;
			top: 66rpx;
		}
	}

	.qrcode-img {
		width: 140rpx;
		height: 140rpx;
		position: fixed;
		bottom: 268rpx;
		right: 24rpx;
	}

	.bottom-container {
		background-color: white;
		box-shadow: 0 -16rpx 16rpx 1rpx #00000008;
		height: 146rpx;
		padding: 0 24rpx;
		justify-content: space-around;

		.item {
			border-radius: 40rpx;
			line-height: 80rpx;
			text-align: center;
			border: 2rpx solid #333333FF;
			width: 192rpx;
			height: 80rpx;
			font-size: 30rpx;
			font-weight: 500;

		}

		.item1 {
			border-radius: 40rpx;
			line-height: 80rpx;
			text-align: center;
			border: 2rpx solid rgba(56, 192, 158, 1);
			background-color: rgba(56, 192, 158, 1);
			color: white;
			width: 192rpx;
			height: 80rpx;
			font-size: 30rpx;
			font-weight: 500;
		}

		.text {
			flex: 1;
			margin-left: 60rpx;
			font-size: 30rpx;
			font-weight: 700;

		}

		.btn {
			margin-right: 34rpx;
			width: 192rpx;
			height: 80rpx;
			border-radius: 40rpx;
			background: rgba(56, 192, 158, 1);
			font-size: 30rpx;
			font-weight: 700;
			color: white;
			text-align: center;
			line-height: 80rpx;
		}
	}


	.showDialog {
		animation: showDialog 0.3s ease-out;
		padding-top: 54rpx;
		width: 750rpx;
		border-radius: 40rpx 40rpx 0 0;
		background: rgba(255, 255, 255, 1);

		.r {
			min-width: 346rpx;
			padding-left: 44rpx;
			margin-bottom: 20rpx;
			font-size: 30rpx;
			font-weight: 500;
			color: rgba(0, 0, 0, 1);


			input {
				width: 160rpx;
				height: 48rpx;
				line-height: 48rpx;
				padding: 0 5rpx;
				font-size: 28rpx;
				opacity: 1;
				border-radius: 4rpx;
				border: 1px solid rgba(153, 153, 153, 1);
			}
		}

		.bottom-box {
			margin-top: 55rpx;
			box-shadow: 0 -32rpx 32rpx 2rpx rgba(245, 245, 247, 1);

			.cancel {
				flex: 1;
				height: 146rpx;
				line-height: 146rpx;
				text-align: center;
				font-size: 32rpx;
				font-weight: 700;
				color: black;
				background-color: white;
			}

			.confirm {
				flex: 1;
				height: 146rpx;
				line-height: 146rpx;
				text-align: center;
				font-size: 32rpx;
				font-weight: 700;
				color: white;
				background-color: rgba(56, 192, 158, 1);
				;
			}
		}

	}

	// 呼吸帧
	@keyframes showDialog {
		0% {
			transform: translate(0%, 100%);
		}

		100% {
			transform: translate(0%, 0%);
		}

	}
</style>
